package com.godyao.framework.beans.factory.config;


import com.godyao.framework.beans.BeansException;
import com.godyao.framework.beans.PropertyValues;

public interface InstantiationAwareBeanPostProcessor extends BeanPostProcessor {

    /**
     * 在Bean执行初始化方法之前执行此方法
     * @return
     */
   Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName);

    /**
     * 在Bean执行初始化方法之后执行此方法
     * @return
     */
   boolean postProcessAfterInstantiation(Object bean, String beanName);

    /**
     * 在对象实例化之后，填充属性之前执行该方法
     * @param pvs
     * @param bean
     * @param beanName
     * @return
     * @throws BeansException
     */
   PropertyValues postProcessPropertyValues(PropertyValues pvs, Object bean, String beanName) throws BeansException;

}
